﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using PloobsEngine.Material;
using PloobsEngine.Cameras;

namespace PloobsEngine.SceneControl
{
    public interface ICuller
    {
        /// <summary>
        /// Get the objects that pass the culling phase
        /// </summary>
        /// <param name="world"></param>
        /// <param name="Filter">Or Filter</param>
        /// <returns></returns>
        IEnumerable<IObject> GetNotCulledObjectsList(IWorld world, ICamera cam,MaterialType Filter);
        /// <summary>
        /// Called Once in the start of the rendering pass
        /// </summary>
        /// <param name="world"></param>
        void StartFrame(IWorld world, ICamera cam);

        void onObjectAdded(IObject obj);
        void onObjectRemoved(IObject obj);
        int RenderedObjectThisFrame
        {
            get;
        }
        
    }
}
